#include "stm32f10x.h"                  // Device header
#include "LED.h"
#include "Delay.h"
#include "Servo.h"
#include "serial.h"
void Timer_Init(void)
{
	//定时器定时中断和外部时钟
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//第一步使能APB1外设，因为TIM2在APB1
	
	TIM_InternalClockConfig(TIM3);//第二步使用内部时钟
	#if 0
	//TIM_ETRClockMode2Config(TIM2,TIM_ExtTRGPSC_OFF,TIM_ExtTRGPolarity_NonInverted,0x00);//外部时钟
	//TIM_ExtTRGPSC_OFF外部触发预分频器（不需要分配）
	//TIM_ExtTRGPolarity_NonInverted外部触发的极性（不反向高电平或上升沿有效）
	//0x00外部触发滤波器
	GPIO_InitTypeDef GPIO_InitStructure;//设定GPIO结构体
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能APB2时钟
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;//GPIO
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;//Pin
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&GPIO_InitStructure);//将设置的结构体的值传入
	#endif
	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;//第三步时基单元初始化
	TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1;
	TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;//向上计数
	TIM_TimeBaseInitStruct.TIM_Period=500-1;//周期,ARR重装计数器的值，取值0~65535
	TIM_TimeBaseInitStruct.TIM_Prescaler=7200-1;//PSC预分频器的值,因为预分频器和计数器都有一个数的偏差，所以-1
	TIM_TimeBaseInitStruct.TIM_RepetitionCounter=0;//重复计数器的值，高级计数器才有
	TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStruct);
	
	TIM_ClearFlag(TIM3,TIM_FLAG_Update);//手动清除中断标志位，因为库函数会自动更新事件
	TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);//第四步使能中断,TIM_IT_Update更新中断通道
	
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//第五步配置NVIC//分组
	NVIC_InitTypeDef NVIC_InitStruct;
	NVIC_InitStruct.NVIC_IRQChannel=TIM3_IRQn;//设置中断通道
	NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
	NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=3;//配置中断优先级
	NVIC_InitStruct.NVIC_IRQChannelSubPriority=1;
	NVIC_Init(&NVIC_InitStruct);
	
	//TIM_Cmd(TIM3,ENABLE);//第六步启动定时器
	
}

/*
void TIM3_IRQHandler(void)
{
	if (TIM_GetITStatus(TIM3, TIM_IT_Update) == SET)
	{
		USART_Cmd(USART1,ENABLE);
		while(!serial_getflag());
		zhui();
		TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
	}
}	*/

